package com.ruoyi.plus.pub.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.plus.pub.domain.PubNoticeReceiver;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统公告通知接收人Mapper接口
 *
 */
@Repository
public interface PubNoticeReceiverMapper extends BaseMapper<PubNoticeReceiver>{

    /**
     * 查询系统通知接收人列表
     * 
     * @param pubNoticeReceiver 系统通知接收人
     * @return 系统通知接收人集合
     */
    List<PubNoticeReceiver> selectPubNoticeReceiverList(PubNoticeReceiver pubNoticeReceiver);


    /**
     * 获取某通知的所有接收人id
     * @param noticeId
     * @return
     */
    List<Long> noticeReceiverIds(Long noticeId);

    /**
     * 通过通知id删除接收人信息
     * @param noticeId
     */
    void deleteReceiversByNoticeId(Long noticeId);

    /**
     * 获取用户未阅读通知的数量
     * @param userId 用户id
     * @return 未读数量
     */
    int unReadCount(@Param("userId") Long userId,@Param("systemType")String systemType);

    /**
     * 获取市政报修用户未阅读通知的数量
     * @param userId 用户id
     * @return 未读数量
     */
    int unReadCountByRepair(@Param("userId") Long userId);

    /**
     * 更新通知状态 1未发布, 2已发布, 3已撤销
     * @param pubNoticeReceiver
     * @return
     */
    int updateNoticeStatus(PubNoticeReceiver pubNoticeReceiver);

    /**
     * 更新通知已读状态 1已读, 2未读
     * @param pubNoticeReceiver
     * @return
     */
    int updateReadStatus(PubNoticeReceiver pubNoticeReceiver);

    /**
     * 删除文件接收者
     *
     * @param noticeId  通知id
     * @param userIds 接收者id
     * @return 成功条数
     */
    int deleteReceivers(@Param("noticeId") Long noticeId, @Param("userIds") List<Long> userIds);

}
